Virtual machines are an abstraction of physical computing resources and they may each include a guest operating system that operates therein. Datacenters may include thousands, tens of thousands, or more virtual machines that are operating concurrently. Improving the performance or efficiency of the virtual machines sometimes involves distributing the virtual machines among a cluster of hosts to balance the load. Known methods for determining how to distribute virtual machines within a cluster include a greedy, hill-climbing algorithm, among others. Some known methods use a decision tree to find solutions, but are limited to exploring a fixed depth of the decision tree. Accordingly, there is a need for improved methods and systems for exhaustively searching for solutions in distributed load balancing. A solution found through exhaustive searching can provide more insight into the efficiency of greedy and other algorithms mentioned above.